Markdown(マークダウン)で技術ブログ、GitHubのREADME、仕様書、社内Wiki、プログラミング学習ノートを書く際に、エンジニアにとって最も利用頻度が高く重要な記法が「Markdown コードブロック(markdown code block)」と「Markdown インラインコード(inline code)」です。
「マークダウンのコードブロックでプログラムを綺麗にシンタックスハイライト(構文色分け)したい」「Python、JavaScript、TypeScript、SQL、Bash、Dockerfileなどの正しい言語指定子を一覧表で確認してコピペしたい」「コードブロックの中でバッククォート3つ(“`)をそのまま表示・エスケープさせるには?」「QiitaやZennのようにファイル名を表示したり、長いコードを折りたたむ方法は?」といった疑問や悩みを抱える方は非常に多く存在します。
Markdownのコードブロックとシンタックスハイライトを正しく使いこなせるようになると、ソースコードの視認性や可読性が劇的に向上し、誰にとっても読みやすく美しい技術文書を瞬時に作成できるようになります。
この記事では、コピペですぐに使える基本構文から、主要プログラミング言語のシンタックスハイライト指定子一覧表、インラインコードとの明確な使い分けルール、バッククォート自体のエスケープ技、diff差分ハイライト、ファイル名表示や折りたたみ表示の実践テクニックまで、網羅的かつ分かりやすく徹底解説します!
📌 本記事のポイント・要点まとめ
- マークダウン コードブロックの基本構文: バッククォート3つ(
```)でコードの上下を囲む(フェンス記法) - シンタックスハイライトの指定: 開始フェンス直後に
pythonやjavascriptなどの言語識別子を小文字で記述 - インラインコードの使い分け: 文中の変数名・関数名・コマンド・ファイルパスはバッククォート1つ(
`code`)で強調 - バッククォートのエスケープ: コードブロック内に
```を含めたいときは、外側を4連バッククォート(````)またはチルダ(~~~)で囲む - 実務で役立つ応用技: Qiita/Zenn/MDX等のファイル名表示、
diff差分ハイライト、<details>による折りたたみ表示も完全網羅
【コピペで即解決】Markdownコードブロック基本構文と主要言語一覧表
まずは、「今すぐ書き方を確認してコピーしたい」というエンジニアやブロガー向けに、コードブロックの基本構文と主要プログラミング言語のシンタックスハイライト指定名を一覧表にまとめました。
基本構文(バッククォート3つ:“`)の書き方
Markdownで複数行のプログラムコードやコマンドラインの実行ログを表示する最も標準的な方法が、コードの開始行と終了行をバッククォート3つ(```)で挟む「フェンス記法(Fenced Code Blocks)」です。
キーボードにおけるバッククォート記号(`)の入力方法は以下の通りです:
- 日本語JISキーボード(Mac): Shift + @
- 日本語JISキーボード(Windows): Shift + @
- US配列キーボード: `(キーボード左上、Esc の直下または Tab の上にあるキー)
▼ Markdown入力例(基本構文・言語指定なし)
```
function greet(name) {
return "Hello, " + name + "!";
}
console.log(greet("World"));
```
▼ ブラウザでの実際の表示結果
function greet(name) {
return "Hello, " + name + "!";
}
console.log(greet("World"));
バッククォート3つで囲んだ部分は、HTML変換時に <pre><code>...</code></pre> タグに変換されます。そのため、プログラムのインデント(半角スペースやタブ)や空行がそのまま等幅フォントで正確に保持されます。
主要プログラミング言語のシンタックスハイライト指定子一覧表
Markdownコードブロックの真価を発揮するのが「シンタックスハイライト(Syntax Highlighting)」です。開始バッククォート(```)の直後に、対象言語の識別子(小文字)をスペースを空けずに記述することで、構文に応じた美しい色分けが自動適用されます。
実務や技術ブログでよく使われる主要なプログラミング言語・マークアップ言語・設定ファイル・インフラ構成ファイルの指定名(識別子およびエイリアス)をジャンル別に完全網羅しました。
| ジャンル・カテゴリ | 言語・フォーマット名 | 推奨指定子(識別子) | 別名・エイリアス |
|---|---|---|---|
| Webフロントエンド | HTML | html |
htm, xhtml |
| CSS | css |
– | |
| SCSS / Sass | scss |
sass |
|
| JavaScript | javascript |
js |
|
| TypeScript | typescript |
ts |
|
| React (JSX) | jsx |
javascriptreact |
|
| React (TSX) | tsx |
typescriptreact |
|
| Vue.js / Svelte | vue / svelte |
– | |
| バックエンド・システム | Python | python |
py |
| PHP | php |
– | |
| Ruby | ruby |
rb |
|
| Java | java |
– | |
| Kotlin | kotlin |
kt |
|
| Go (Golang) | go |
golang |
|
| Rust | rust |
rs |
|
| C言語 | c |
– | |
| C++ | cpp |
c++, cc, cxx |
|
| C# | csharp |
cs |
|
| インフラ・DB・シェル | Bash / シェルスクリプト | bash |
sh, zsh, shell |
| PowerShell | powershell |
ps1, pwsh |
|
| SQL (MySQL, PostgreSQL等) | sql |
pgsql, mysql |
|
| Dockerfile | dockerfile |
docker |
|
| Terraform (HCL) | hcl |
tf, terraform |
|
| Nginx設定ファイル | nginx |
nginxconf |
|
| Apache設定ファイル | apacheconf |
apache |
|
| 設定ファイル・データ | JSON | json |
jsonc, json5 |
| YAML | yaml |
yml |
|
| TOML / INI | toml |
ini |
|
| XML / SVG | xml |
svg |
|
| GraphQL | graphql |
gql |
|
| 差分・ドキュメント | Diff(変更差分) | diff |
– |
| Markdown | markdown |
md |
|
| Mermaid(作図・図解) | mermaid |
– | |
| プレーンテキスト(色なし) | text |
plaintext |
⚠️ 言語指定は大文字?小文字?
多くのパーサーは大文字小文字を区別しませんが、環境依存のトラブルやレンダリング失敗を防ぐため「すべて半角小文字(例: python, javascript)」で記述するのが世界的な推奨標準です。また、``` python のように記号と識別子の間に半角スペースを入れないよう注意してください。
インラインコードとコードブロックの使い分け
Markdownには、複数行にわたるプログラムコードを掲載するコードブロックのほかに、文章の途中に埋め込んで変数やコマンドをハイライト表示する「Markdown インラインコード(inline code)」が用意されています。この2つを適切に使い分けることが、読みやすく洗練された技術ドキュメントを作るための基本です。
インラインコード(バッククォート1つ:`)の書き方と文中ハイライト
Markdown インラインコードを作成するには、装飾したい単語やフレーズをバッククォート1つ(`)で左右から囲みます。
▼ Markdown インラインコードの入力例
パッケージをインストールするには `npm install axios` を実行し、
`package.json` の `dependencies` に追加されたことを確認してください。
▼ ブラウザでの実際の表示結果
パッケージをインストールするには npm install axios を実行し、package.json の dependencies に追加されたことを確認してください。
インラインコードで囲んだ部分は、HTMLの <code>...</code> タグに変換され、背景色や文字色が変化して視覚的に引き立ちます。読者が「どこがコマンドで、どこが通常の説明文なのか」を一目で識別できるようになります。
文章内でインラインコードを使うべき代表的な要素は以下の通りです:
- 変数名・関数名・クラス名:
const userData,getUserInfo(),AuthService - ターミナルコマンド・CLIオプション:
git commit -m "feat: login",docker compose up -d,--save-dev - ファイル名・ディレクトリパス:
.env.local,/etc/nginx/nginx.conf,src/components/Header.tsx - HTMLタグ・CSSクラス名:
<div>,<a href="...">,class="container" - APIエンドポイント・HTTPステータス:
GET /api/v1/users,404 Not Found,200 OK - 環境変数・設定キー名:
NODE_ENV=production,PORT=3000
複数行コードブロックとの明確な使い分けルール
「どちらを使うべきか」で迷った際は、以下の機能比較表をチェックしてください。
| 比較項目 | コードブロック(```) |
インラインコード(`) |
|---|---|---|
| 囲む記号 | バッククォート3つ(```) |
バッククォート1つ(`) |
| 変換されるHTML | <pre><code>...</code></pre> |
<code>...</code> |
| 配置レイアウト | 独立した段落ブロック(別行立て) | 文章の途中(行内・インライン) |
| 複数行・改行保持 | 可能(改行やインデントを完全保持) | 不可(単一行内でのみ使用) |
| シンタックスハイライト | 可能(言語名を指定して多色表示) | 不可(単色・背景色のみ) |
| 主な用途 | まとまったプログラム全体、設定ファイル、実行ログ | 文中の変数名、ファイル名、短いコマンド、関数名 |
実務における判断基準はとても明快です。「複数行にわたるコードや、読者がワンクリックでコピーして実行したいスニペットはコードブロック」「文章の流れを止めずに単語として言及したい要素はインラインコード」と使い分けることで、ノイズのない美しい技術文書に仕上がります。
実務で差がつく応用テクニック&トラブル対策
ここからは、実際の開発現場や技術ブログ執筆で差がつく、Markdownコードブロックの一歩進んだ応用テクニックとトラブルシューティングを紹介します。
コードブロック内でバッククォート(“`)を表示・エスケープする方法
Markdown自体の書き方を解説するブログや社内マニュアルを作成していると、「コードブロックの中にバッククォート3つ(“`)をそのまま記述して読者に見せたい」というケースが必ず発生します。
通常通りに ``` の中に ``` を書くと、外側のブロックが途中で勝手に終了してしまい、構文エラーとなってしまいます。このエスケープ問題を解決するルールは2通りあります。
方法1:外側を4連バッククォート(““)で囲む(最も確実・推奨)
CommonMarkおよびGFM(GitHub Flavored Markdown)の仕様では、「外側のバッククォートの数を内側よりも多くする」ことで、内側のバッククォートを安全にエスケープできます。
▼ 4連バッククォートによるエスケープ入力例
````markdown
以下のようにMarkdownコードブロックを記述します:
```python
def hello():
print("Hello World")
```
````
▼ ブラウザでの実際の表示結果(内部の“`が綺麗に表示される)
以下のようにMarkdownコードブロックを記述します:
```python
def hello():
print("Hello World")
```
もし内部に4連バッククォートを含めたい場合は、外側を5連バッククォート(`````)にすることで、何段階でもネストしてエスケープ可能です。
方法2:チルダ3つ(~~~)のコードブロック記法を使う
もう1つの解決策は、外側の囲み記号にチルダ3つ(~~~)を採用する記法です。囲み文字の種類自体が異なるため、内部のバッククォート3つを一切誤認することなく出力できます。
▼ チルダ記法による入力例
~~~markdown
```javascript
console.log("チルダ記法ならエスケープが直感的");
```
~~~
💡 文中のインラインコードでバッククォート自体を表示したいときは?
文中のインラインコード内でバッククォート(`)を表示したい場合は、「2つのバッククォート(``)で囲み、前後に半角スペースを1つ空ける」ルール(例: `` ` `` や `` `コード` ``)を使います。前後の半角スペースはレンダリング時に自動で除去されるため、余分な空白が表示される心配はありません。
実務で頻出!diff記法によるコード差分(追加・削除)のカラー強調
Pull Request(PR)の説明文や、ブログで「コードの修正前後」を解説する際は、言語指定に diff を指定するのが極めて効果的です。
▼ Markdown入力例(diff記法)
```diff
function calculatePrice(price, taxRate) {
- return price * taxRate; // 修正前:税額のみ返していたバグ
+ return price * (1 + taxRate); // 修正後:税込合計金額を返す
}
```
▼ ブラウザでの実際の表示イメージ(赤と緑で直感的に変更がわかる)
function calculatePrice(price, taxRate) {
- return price * taxRate; // 修正前:税額のみ返していたバグ
+ return price * (1 + taxRate); // 修正後:税込合計金額を返す
}
行頭に半角マイナス(-)を置くと赤色(削除行)、半角プラス(+)を置くと緑色(追加行)としてハイライトされます。変更のない前後の行は、行頭に半角スペースを2個入れておきます。
ファイル名表示やタイトル表示(GitHub/Qiita/Zenn等の対応状況)
実務の仕様書やチュートリアル記事では、「どのファイルに書くコードなのか」を明示したい場面が頻繁にあります。プラットフォームごとの記法を把握しておきましょう。
- Qiita(キータ): 言語名の後ろにコロン(
:)を付け、ファイル名を続けて記述します。```python:src/main.py print("Qiitaスタイルのファイル名表示") ``` - Zenn(ゼン): 言語名の後ろにコロン(
:)または半角スペースを空けてファイル名を記述します。```typescript:src/utils/math.ts export const add = (a: number, b: number) => a + b; ``` - Docusaurus / VitePress / Astro(MDX系):
title="ファイル名"属性を付与します。```javascript title="next.config.js" module.exports = { reactStrictMode: true }; ``` - GitHub / 標準Markdown(共通ルール): 標準仕様にはファイル名表示機能がないため、コードブロックの直前に太字やアイコン、引用ブロックでファイルパスを明示します。
📁 <strong>docker-compose.yml</strong> ```yaml version: '3.8' services: app: build: . ```
なお、ConfluenceやNotion、Teamsなどの社内情報共有ツールでソースコードを共同管理する場合は、マークダウンマクロやコードブロック機能と連携することで、シンタックスハイライト付きで綺麗にナレッジを蓄積できます。社内Wikiでのコード共有やMarkdown活用法については、【チーム共有】Markdown共有ツール・社内Wikiおすすめ比較でも詳しく解説しています。
インデント(半角スペース4つ)による古いコード記法との違いと非推奨の理由
初期のMarkdown(オリジナル仕様)では、行頭に半角スペース4個(またはタブ1個)を挿入することでコードブロックにする「インデント記法」が使われていました。
| 比較項目 | フェンス記法(```)【現在の世界標準・推奨】 |
インデント記法(スペース4個) 【旧仕様・非推奨】 |
|---|---|---|
| 記述の手間 | 上下を3文字で囲むだけで完了 | 全行の先頭にスペース4個が必要で煩雑 |
| シンタックスハイライト | 言語名を指定して多色色分け可能 | 言語指定ができず白黒表示のみ |
| 箇条書き・リスト内の配置 | インデントを揃えて直感的にネスト可能 | スペース8個以上の調整が必要で崩れやすい |
| 空行の扱い | コード内の空行を自由に保持 | 空行のスペース不足でブロックが分断 |
現在では、GitHub Flavored Markdown(GFM)をはじめとする主要なMarkdown環境においてフェンス記法(```)が圧倒的な標準となっています。インデント記法はリスト記述時の誤作動の原因にもなりやすいため、原則としてフェンス記法のみを使用しましょう。
Markdownコードブロックに関するよくある質問(FAQ)
Markdownのコードブロックを利用する際にエンジニアからよく寄せられる質問とその解決策をQ&A形式でまとめました。
Q1. シンタックスハイライトが正しく色分けされない原因は何ですか?
主な原因とチェックポイント:
- 言語指定子のスペルミスや大文字:
PythonやJSではなく、すべて小文字のpython,javascriptを指定してください。 - 開始バッククォートと指定子の間に空白がある:
``` pythonのように半角スペースを空けるとパーサーが認識できない場合があります。```pythonとスペースなしで詰めて書きます。 - 閲覧・レンダリング環境側の非対応: 使用しているMarkdownビューアや静的サイトジェネレーターに、該当言語のハイライトモジュールが組み込まれていない場合があります。
- VS Code等のエディタの場合: 対象言語の構文拡張機能が有効になっていない可能性があります。
Q2. 長いコードを折りたたみ表示(<details> タグ併用)にするには?
行数が非常に長い設定ファイルや実行ログを掲載する場合、HTMLの <details> と <summary> タグを組み合わせることで、アコーディオン状に折りたたんで表示できます。
▼ 折りたたみ表示の記述例
<details>
<summary>【クリックして開く】完全な設定ファイル(nginx.conf)を見る</summary>
```nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
}
```
</details>
⚠️ 【重要ルール】空行を必ず挟む: <summary> の直後と </details> の直前には必ず空行を1行ずつ挿入してください。空行が抜けていると、Markdownパーサーが内部のバッククォートをコードブロックとして正しくパースできず、平文テキストとして崩れてしまいます。
Q3. 行番号を表示させる標準的な記法はありますか?
標準のMarkdown(CommonMark)仕様には行番号を表示する構文は存在しません。行番号を付けたい場合は、静的サイトジェネレーター(Astro、Docusaurus、VitePress等)の拡張オプション(例: ```js showLineNumbers)を利用するか、Prism.jsやHighlight.jsのプラグインを行番号有効化設定にして運用します。
まとめ|Markdownコードブロックをマスターして読みやすい技術文書を作ろう
今回は、Markdownコードブロック(フェンス記法)の基本構文から、主要プログラミング言語のシンタックスハイライト指定子一覧表、インラインコードとの使い分けルール、バッククォートのエスケープ技、diff差分ハイライト、ファイル名表示や折りたたみ表示まで幅広く徹底解説しました。
🎯 今回のおさらいポイント
- 複数行コードは上下をバッククォート3つ(
```)で囲む - 開始フェンス直後に
pythonやjavascriptなどの小文字識別子を指定して自動色分け - 文中の変数名・関数名・コマンドはバッククォート1つ(
`code`)でインライン表示 - コードブロック内に
```を含めたいときは、外側を4連バッククォート(````)でエスケープ - コードの変更点を直感的に示すには
```diffを活用する - 古いインデント記法(スペース4個)は避け、フェンス記法に統一する
コードブロックを適切に使いこなすことで、あなたの作成する技術ブログ、README、仕様書の視認性と信頼性は格段に高まります。ぜひ日々の開発ドキュメント作成に活用してください!
[…] コードブロックガイド […]
[…] 他ツールを含めたコードブロックの基本仕様や言語別の書き方については、当サイトのMarkdownコードブロックの書き方完全ガイドでも詳しく解説しています。 […]
[…] Markdownコードブロックの書き方完全ガイド を、ドキュメント内の表組み作成は Markdown表(テーブル)の作り方 […]